package educar.controllers;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import educar.gui.AdministradorView;
import educar.models.Docente;
import educar.models.docenteNotFound;

public class DocenteController implements ActionListener {
  private AdministradorView view;
  String nombreDocente;
  String apellidoDocente;
  String dni;
  String direccionDocente;
  int dniEntero;
	
  public DocenteController(AdministradorView view) {
    this.view=view;
  }
	
  public void actionPerformed(ActionEvent evento){
    nombreDocente="";
	direccionDocente="";
	dni="";
	apellidoDocente="";
	nombreDocente=view.getNombreDocente();
	direccionDocente=view.getDireccionDocente();
	dni=view.getDniDocente();
	apellidoDocente=view.getApellidoDocente();
	if(evento.getActionCommand().equals("Cargar")){
	  try {
		dniEntero=Integer.parseInt(dni.trim());
	  } 
	  catch (Exception e) {
	    JOptionPane.showMessageDialog(null, "Dni incorrecto");
		view.resetCamposDocente();}
		if(nombreDocente.equals("")||direccionDocente.equals("")||(apellidoDocente.equals(""))||(dni.equals("")))
		  JOptionPane.showMessageDialog(null, "Error en el ingreso de datos");
		else 
		  try{
			Docente.getDocenteByDNI(dni);
			JOptionPane.showMessageDialog(null, "Ya existe un Docente con ese DNI, intente otro");
		  } 
		catch(docenteNotFound e) {
		  Docente doc = new Docente(dniEntero,nombreDocente,apellidoDocente,direccionDocente);
		  doc.save();
		  view.resetCamposDocente();
		  JOptionPane.showMessageDialog(null, "Docente insertado con exito");
		  view.actualizarGraficas();
		}
	}
	else {
	  if(evento.getActionCommand().equals("Eliminar")){
	    try {
		  dniEntero=Integer.parseInt(dni.trim());
		}
	    catch (Exception e){
		  JOptionPane.showMessageDialog(null,"Dni incorrecto");
		  view.resetCamposDocente();}
		  try {
		    Docente.getDocenteByDNI(dni);
			Docente.destroy("docente","dni",dni); 
			view.resetCamposDocente();
			JOptionPane.showMessageDialog(null,"Docente eliminado con exito");
			view.actualizarGraficas();
		  }
		  catch(docenteNotFound e) {
			 JOptionPane.showMessageDialog(null,"No existe ningun Docente con ese DNI");
          }
	    }
	    else {
		  if(evento.getActionCommand().equals("Modificar")){
		  try {
			dniEntero=Integer.parseInt(dni.trim());
			Docente d = Docente.getDocenteByDNI(dni);
			view.setCamposDocente(d.getNombre(),d.getApellido(),d.getDireccion(),Integer.toString(d.getDni()));
			view.setBotonDocenteOK(true);
		  }
			catch(docenteNotFound e) {
			  JOptionPane.showMessageDialog(null,"No existe ningun Docente con ese DNI");
			}
			catch (Exception e){
			  JOptionPane.showMessageDialog(null,"Dni incorrecto");
			  view.resetCamposDocente();}
		 }
		 else {
			if(evento.getActionCommand().equals("OK")){
			  if(nombreDocente.equals("")||(apellidoDocente.equals(""))||(dni.equals(""))){
			    view.resetCamposDocente();
			  } 
			  else {
				try {
				  Docente doc = Docente.getDocenteByDNI(dni);
				  doc.modificar(view.getDireccionDocente());
				  JOptionPane.showMessageDialog(null,"Docente modificado con exito");
				  view.resetCamposDocente();
				} 
				catch(docenteNotFound e) {
				  JOptionPane.showMessageDialog(null,"No existe ningun Docente con ese DNI");
				}
	   		  }
			  view.setBotonDocenteOK(false);
		     }
	      }
       }
    }
  }
  
  public static String[] listarNombres() throws SQLException{ 
    ArrayList<String> res= Docente.getNombres();
    String [] docentes = new String[res.size()];
    for(int i =0; i<res.size(); i++){
      docentes[i]=res.get(i);
    }
    return docentes;
 }
}
	
